<?php
// src/Sdz/BlogBundle/Command/FixtureCategoriesCommand.php

namespace D3hdv\Diablo3Bundle\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument; 
use D3hdv\Diablo3Bundle\Entity\D3Compte;
use D3hdv\Diablo3Bundle\Entity\D3Coffre;
use D3hdv\Diablo3Bundle\Entity\Role;

use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;



 

class FixtureAdminDiablo3Command extends ContainerAwareCommand
{
    protected function configure()
    {
        $this->setName('D3hdvDiablo3:fixture:AdminDiablo3');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // On récupère l'EntityManager
        $em = $this->getContainer()->get('doctrine.orm.entity_manager');

	$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:Role');

	    // On récupère l'entité correspondant à l'id $id
	$Roles_Admin_D3 = $repository->findByName("ROLE_ADMIN_D3");
	
	$D3Compte = new D3Compte();
       
        // On donne le login Admin à notre nouvel utilisateur
        $D3Compte->setUsername('admin');
        $D3Compte->setEmail('admin@Diablo3.net');
        // On cré un salt pour amélioré la sécurité
        $D3Compte->setSalt(md5(time()));
 
        // On crée un mot de passe (attention, comme vous pouvez le voir, il faut utiliser les même paramètres
        // que spécifiés dans le fichier security.ym, a sacoir SHA512 avec 10 itérations.        
        $encoder = new MessageDigestPasswordEncoder('sha512', true, 10);
        // On cré donc le mot de passe "admin2" à partir de l'encodage choisi au-dessus
        $password = $encoder->encodePassword('12345', $D3Compte->getSalt());
        // On applique le mot de passe à l'utilisateur
	
        	$D3Compte->setPassword($password);
 	
        //$D3Compte->getUserRoles()->add($role);
	foreach($Roles_Admin_D3 as $i => $Role_Admin_D3)
	{
 		$D3Compte->addUserRole($Role_Admin_D3);
	}

	$coffre=new D3Coffre;
	$coffre->setPieceOr(0);
	$coffre->setArgent(0);

	$em->persist($coffre);
	$em->flush();

	$D3Compte->setCoffre($coffre);

        $em->persist($D3Compte);
 
        $output->writeln('Enregistrement du compte Admin Diablo3  ...');

        // On déclenche l'neregistrement
        $em->flush();

        // On retourne 0 pour dire que la commande s'est bien exécutée
        return 0;
    }
}

?>
